1. Technical Field
This invention relates generally to the field of software development environments and specifically to a development environment that allows multiple clients to simultaneously access, edit and otherwise develop the same application, even while the application is being used. The invention also specifically relates to a software development environment that combines the run mode and the design mode of the environment so that software may be developed and run simultaneously without the need for intermediate conversions or compiling.
2. Background Art
The conventional software development process involves a number of required sequential steps each performed by a different development group member; each step being dependent upon the preceding steps to define a critical path in the software development timeline. Because the steps are sequential and dependent upon preceding steps, conventional software development processes are relatively long. If a preceding step is not complete or is completed incorrectly for whatever reason, such as insufficient communication between development group members, the subsequent steps must be postponed until the previous steps are correctly completed.
One example of a typical software development project may involve a company with a need for software. The software concept is explained to the project manager, who explains the concept to a layout designer, who lays out the concept for a graphics designer and explains the data requirements, which are based on the layout design, to the data definition designer. All designers then explain their portion of the design to the programmer who attempts to merge the designs into the actual implementation of the software application so it can be tested for problems by the testing staff. The problems reported by the testing staff as well as design changes by the project manager are reported to the appropriate designers so that corrections can be made effectively starting the cycle over again. Even when the software development team believes the software is done, the client may then still have changes and the process begins again. Software development processes which use linearly dependent development steps require significant development time. Even if there were unlimited resources for a software development project, the development process would still need to go through those steps.
To shorten the overall time required for software development, others have used what is commonly called Rapid Application Development (RAD) methods to shorten the time required for each step in the process. Examples of RAD techniques include Graphical User Interface (GUI) layout design tools, visual data layout design tools, as well as others. These methods shorten the time required within a particular step, but still require the linear dependencies previously experienced. “Visual” development environments, such as Borland's Delphi™, Microsoft® Visual Basic, Microsoft® J++ and Powersoft's PowerBuilder™, are becoming preferred development tools for quickly creating production applications. The RAD approach has been successful to some extent because the process has been made faster. However, the linear dependencies still exist. Ultimately, each step still requires, and is limited to, a single user sitting at a single computer to perform the step, and any single computer only accepts input contributing to the step from one keyboard and one mouse at a time.